package eSchool.BL;

import eSchool.DataLayer.DAOFactory;
import eSchool.DataLayer.IAlunoDAO;

public class Aluno extends EntidadeBase {
    
    private String numAluno;
    private DisciplinasInscrito mInscricoes;


    public Aluno() {
        this.numAluno = "";
        this.nome ="";
        this.morada = "";
        this.localidade = "";
        this.codPostal = "";
        this.email = "";
        this.telefone = "";
        this.sexo = "";
        this.obs = "";
    }
    
    public Aluno(String numAluno) throws Exception {
        this.leDados(numAluno);
    }

    public DisciplinasInscrito getInscricoes() {
        return mInscricoes;
    }

    public void setInscricoes(DisciplinasInscrito val) {
        this.mInscricoes = val;
    }

    public String getNumAluno() {
        return numAluno;
    }

    public void setNumAluno(String val) {
        this.numAluno = val;
    }

    @Override
    public void gravaDados() throws Exception {
        DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
        IAlunoDAO alunoDAO = factory.getAlunoDAO();
        if(alunoDAO.findAluno(this.numAluno)== null)
            alunoDAO.insertAluno(this);
        else
            alunoDAO.updateAluno(this);
    }
  
    @Override
    public void leDados() throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void leDados(String numAluno) throws Exception {
         DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
         IAlunoDAO alunoDAO = factory.getAlunoDAO();           
         alunoDAO.findAluno(this, numAluno);
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return numAluno;
            case 1:
                return morada;
            case 2:
                return codPostal;
            case 3:
                return localidade;
            case 4:
                return sexo;
            case 5:
                return email;
            case 6:
                return telefone;
            case 7:
                return obs;
            case 8:
                return nome;
            default:
                return null;
       }
    }
    
    public int getColumnCount() {
        return 9;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return "numAluno";
            case 1:
                return "morada";
            case 2:
                return "codPostal";
            case 3:
                return "localidade";
            case 4:
                return "sexo";
            case 5:
                return "email";
            case 6:
                return "telefone";
            case 7:
                return "obs";
            case 8:
                return "nome";
            default:
                return null;
       }
    }

    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return numAluno.getClass();
            case 1:
                return morada.getClass();
            case 2:
                return codPostal.getClass();
            case 3:
                return localidade.getClass();
            case 4:
                return sexo.getClass();
            case 5:
                return email.getClass();
            case 6:
                return telefone.getClass();
            case 7:
                return obs.getClass();
            case 8:
                return nome.getClass();
            default:
                return null;
       }

    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

   
    public void setValueAt(Object aValue, int rowIndex, int columnIndex){
        
       switch (columnIndex) {
            case 0:
                numAluno = String.valueOf(aValue);
                break;
            case 1:
                morada = String.valueOf(aValue);
                break;
            case 2:
                codPostal = String.valueOf(aValue);
                break;
            case 3:
                localidade = String.valueOf(aValue);
                break;
            case 4:
                sexo = String.valueOf(aValue);
                break;
            case 5:
                email = String.valueOf(aValue);
                break;
            case 6:
                telefone = String.valueOf(aValue);
                break;
            case 7:
                obs = String.valueOf(aValue);
                break;
            case 8:
                nome = String.valueOf(aValue);
                break;
        }
    }
}

